package com.ruoyi.framework.web.domain.server;

import com.ruoyi.common.utils.Arith;

/**
 * CPU相关信息
 * 该类用于封装CPU的相关监控信息，包括核心数、使用率等数据
 *
 * @author ruoyi
 */
public class Cpu {
    /**
     * 核心数
     */
    private int cpuNum;

    /**
     * CPU总的使用率
     */
    private double total;

    /**
     * CPU系统使用率
     */
    private double sys;

    /**
     * CPU用户使用率
     */
    private double used;

    /**
     * CPU当前等待率
     */
    private double wait;

    /**
     * CPU当前空闲率
     */
    private double free;

    /**
     * 获取CPU核心数
     *
     * @return CPU核心数
     */
    public int getCpuNum() {
        return cpuNum;
    }

    /**
     * 设置CPU核心数
     *
     * @param cpuNum CPU核心数
     */
    public void setCpuNum(int cpuNum) {
        this.cpuNum = cpuNum;
    }

    /**
     * 获取CPU总的使用率（百分比）
     * 通过将原始值乘以100并保留两位小数进行格式化
     *
     * @return 格式化后的CPU总使用率（百分比）
     */
    public double getTotal() {
        return Arith.round(Arith.mul(total, 100), 2);
    }

    /**
     * 设置CPU总的使用率
     *
     * @param total CPU总的使用率
     */
    public void setTotal(double total) {
        this.total = total;
    }

    /**
     * 获取CPU系统使用率（百分比）
     * 通过将系统使用率除以总使用率再乘以100并保留两位小数进行格式化
     *
     * @return 格式化后的CPU系统使用率（百分比）
     */
    public double getSys() {
        return Arith.round(Arith.mul(sys / total, 100), 2);
    }

    /**
     * 设置CPU系统使用率
     *
     * @param sys CPU系统使用率
     */
    public void setSys(double sys) {
        this.sys = sys;
    }

    /**
     * 获取CPU用户使用率（百分比）
     * 通过将用户使用率除以总使用率再乘以100并保留两位小数进行格式化
     *
     * @return 格式化后的CPU用户使用率（百分比）
     */
    public double getUsed() {
        return Arith.round(Arith.mul(used / total, 100), 2);
    }

    /**
     * 设置CPU用户使用率
     *
     * @param used CPU用户使用率
     */
    public void setUsed(double used) {
        this.used = used;
    }

    /**
     * 获取CPU等待率（百分比）
     * 通过将等待率除以总使用率再乘以100并保留两位小数进行格式化
     *
     * @return 格式化后的CPU等待率（百分比）
     */
    public double getWait() {
        return Arith.round(Arith.mul(wait / total, 100), 2);
    }

    /**
     * 设置CPU等待率
     *
     * @param wait CPU等待率
     */
    public void setWait(double wait) {
        this.wait = wait;
    }

    /**
     * 获取CPU空闲率（百分比）
     * 通过将空闲率除以总使用率再乘以100并保留两位小数进行格式化
     *
     * @return 格式化后的CPU空闲率（百分比）
     */
    public double getFree() {
        return Arith.round(Arith.mul(free / total, 100), 2);
    }

    /**
     * 设置CPU空闲率
     *
     * @param free CPU空闲率
     */
    public void setFree(double free) {
        this.free = free;
    }
}
